package com.are.odisea;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class GestionMantenimiento {
	private db conexion = null;
	private OrdenMantenimiento ordenMantenimiento;
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	public OrdenMantenimiento getOrdenMantenimiento() {
		return ordenMantenimiento;
	}
	public void setOrdenMantenimiento(OrdenMantenimiento om) {
		this.ordenMantenimiento = om;
	}
	public GestionMantenimiento(db conexion, OrdenMantenimiento om) {
		super();
		this.conexion = conexion;
		this.ordenMantenimiento = om;
	}
	public GestionMantenimiento() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public ArrayList<OrdenMantenimiento> ListAsignadas (String cedula) throws SQLException {
		ArrayList<OrdenMantenimiento> lista = new ArrayList<OrdenMantenimiento>();
		
		String  sql = "select * from asignadas_st where odspeas=?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, cedula);
		ResultSet rs = conexion.Query(pst);
		while (rs.next()) {
			OrdenMantenimiento om = new OrdenMantenimiento();
			om.setId(rs.getString("odscodi"));
			om.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			om.setProducto(rs.getString("odsacti"));
			om.setLocalidad(rs.getString("odsloca"));
			om.setDescLocalidad(rs.getString("locadesc"));
			om.setDepartamento(rs.getString("locadepa"));
			om.setDescDepartamento(rs.getString("depadesc"));
			om.setCliente(rs.getString("odsnocl"));
			om.setTelefonoCliente(rs.getString("odsteco"));
			om.setDireccion(rs.getString("odsdire"));
			om.setCentral(rs.getString("odsnuce"));
			om.setDistribuidor(rs.getString("odsdist"));
			om.setListon(rs.getString("odslist"));
			om.setParListon(rs.getString("odspali"));
			om.setCaja(rs.getString("odscaja"));
			om.setParCaja(rs.getString("odsparc"));
			om.setPost(rs.getString("odspost"));
			om.setAdsl(rs.getString("odsadsl"));
			om.setArmario(rs.getString("odsarma"));
			om.setAbonado(rs.getString("odsnuab"));
			om.setIpDSLAM(rs.getString("odsipds"));
			om.setIpLAN(rs.getString("odsipla"));
			om.setIpWAN(rs.getString("odsipwa"));
			om.setFecha_asignacion(rs.getString("odsfeas"));
			om.setFecha_carga(rs.getString("odsfeca"));
			om.setUsuario_asignacion(rs.getString("odsusas"));
			om.setUsuario_carga(rs.getString("odsusca"));
			om.setFecha_orden(rs.getString("odsfrec"));
			om.setLatitud(rs.getString("odslati"));
			om.setLongitud(rs.getString("odslong"));
			om.setAnulada(rs.getInt("odsanba"));
			om.setObservacionBandeja(rs.getString("odsobct"));
			om.setUsuarioBandeja(rs.getString("odsusct"));
			om.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			lista.add(om);
		}
		rs.close();
		
		return lista;
	}
	
	public ArrayList<OrdenMantenimiento> ListAsignadasDepartamento (String departamento) throws SQLException {
		ArrayList<OrdenMantenimiento> lista = new ArrayList<OrdenMantenimiento>();
		
		String  sql = "select * from asignadas_st where locadepa=?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, departamento);
		ResultSet rs = conexion.Query(pst);
		while (rs.next()) {
			OrdenMantenimiento om = new OrdenMantenimiento();
			om.setId(rs.getString("odscodi"));
			om.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			om.setProducto(rs.getString("odsacti"));
			om.setLocalidad(rs.getString("odsloca"));
			om.setDescLocalidad(rs.getString("locadesc"));
			om.setDepartamento(rs.getString("locadepa"));
			om.setDescDepartamento(rs.getString("depadesc"));
			om.setCliente(rs.getString("odsnocl"));
			om.setTelefonoCliente(rs.getString("odsteco"));
			om.setDireccion(rs.getString("odsdire"));
			om.setCentral(rs.getString("odsnuce"));
			om.setDistribuidor(rs.getString("odsdist"));
			om.setListon(rs.getString("odslist"));
			om.setParListon(rs.getString("odspali"));
			om.setCaja(rs.getString("odscaja"));
			om.setParCaja(rs.getString("odsparc"));
			om.setPost(rs.getString("odspost"));
			om.setAdsl(rs.getString("odsadsl"));
			om.setArmario(rs.getString("odsarma"));
			om.setAbonado(rs.getString("odsnuab"));
			om.setIpDSLAM(rs.getString("odsipds"));
			om.setIpLAN(rs.getString("odsipla"));
			om.setIpWAN(rs.getString("odsipwa"));
			om.setFecha_asignacion(rs.getString("odsfeas"));
			om.setFecha_carga(rs.getString("odsfeca"));
			om.setUsuario_asignacion(rs.getString("odsusas"));
			om.setUsuario_carga(rs.getString("odsusca"));
			om.setFecha_orden(rs.getString("odsfrec"));
			om.setLatitud(rs.getString("odslati"));
			om.setLongitud(rs.getString("odslong"));
			om.setAnulada(rs.getInt("odsanba"));
			om.setObservacionBandeja(rs.getString("odsobct"));
			om.setUsuarioBandeja(rs.getString("odsusct"));
			om.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			lista.add(om);
		}
		rs.close();
		
		return lista;
	}
	
	public ArrayList<OrdenMantenimiento> ListAsignadasByProducto (String departamento,String producto) throws SQLException {
		ArrayList<OrdenMantenimiento> lista = new ArrayList<OrdenMantenimiento>();
		
		String  sql = "select * from asignadas_st where odsacti = ? and locadepa=?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, producto);
		pst.setString(2, departamento);
		ResultSet rs = conexion.Query(pst);
		while (rs.next()) {
			OrdenMantenimiento om = new OrdenMantenimiento();
			om.setId(rs.getString("odscodi"));
			om.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			om.setProducto(rs.getString("odsacti"));
			om.setLocalidad(rs.getString("odsloca"));
			om.setDescLocalidad(rs.getString("locadesc"));
			om.setDepartamento(rs.getString("locadepa"));
			om.setDescDepartamento(rs.getString("depadesc"));
			om.setCliente(rs.getString("odsnocl"));
			om.setTelefonoCliente(rs.getString("odsteco"));
			om.setDireccion(rs.getString("odsdire"));
			om.setCentral(rs.getString("odsnuce"));
			om.setDistribuidor(rs.getString("odsdist"));
			om.setListon(rs.getString("odslist"));
			om.setParListon(rs.getString("odspali"));
			om.setCaja(rs.getString("odscaja"));
			om.setParCaja(rs.getString("odsparc"));
			om.setPost(rs.getString("odspost"));
			om.setAdsl(rs.getString("odsadsl"));
			om.setArmario(rs.getString("odsarma"));
			om.setAbonado(rs.getString("odsnuab"));
			om.setIpDSLAM(rs.getString("odsipds"));
			om.setIpLAN(rs.getString("odsipla"));
			om.setIpWAN(rs.getString("odsipwa"));
			om.setFecha_asignacion(rs.getString("odsfeas"));
			om.setFecha_carga(rs.getString("odsfeca"));
			om.setUsuario_asignacion(rs.getString("odsusas"));
			om.setUsuario_carga(rs.getString("odsusca"));
			om.setFecha_orden(rs.getString("odsfrec"));
			om.setLatitud(rs.getString("odslati"));
			om.setLongitud(rs.getString("odslong"));
			om.setAnulada(rs.getInt("odsanba"));
			om.setObservacionBandeja(rs.getString("odsobct"));
			om.setUsuarioBandeja(rs.getString("odsusct"));
			om.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			lista.add(om);
		}
		rs.close();
		
		return lista;
	}
	
	public ArrayList<OrdenMantenimiento> ListEnvejecidas (String departamento,int dias) throws SQLException {
		ArrayList<OrdenMantenimiento> lista = new ArrayList<OrdenMantenimiento>();
		
		String  sql = "select * from asignadas_st where locadepa = ? and  DATEDIFF(current_date(),odsfrec) >= ? ";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, departamento);
		pst.setInt(2, dias);
		ResultSet rs = conexion.Query(pst);
		while (rs.next()) {
			OrdenMantenimiento om = new OrdenMantenimiento();
			om.setId(rs.getString("odscodi"));
			om.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			om.setProducto(rs.getString("odsacti"));
			om.setLocalidad(rs.getString("odsloca"));
			om.setDescLocalidad(rs.getString("locadesc"));
			om.setDepartamento(rs.getString("locadepa"));
			om.setDescDepartamento(rs.getString("depadesc"));
			om.setCliente(rs.getString("odsnocl"));
			om.setTelefonoCliente(rs.getString("odsteco"));
			om.setDireccion(rs.getString("odsdire"));
			om.setCentral(rs.getString("odsnuce"));
			om.setDistribuidor(rs.getString("odsdist"));
			om.setListon(rs.getString("odslist"));
			om.setParListon(rs.getString("odspali"));
			om.setCaja(rs.getString("odscaja"));
			om.setParCaja(rs.getString("odsparc"));
			om.setPost(rs.getString("odspost"));
			om.setAdsl(rs.getString("odsadsl"));
			om.setArmario(rs.getString("odsarma"));
			om.setAbonado(rs.getString("odsnuab"));
			om.setIpDSLAM(rs.getString("odsipds"));
			om.setIpLAN(rs.getString("odsipla"));
			om.setIpWAN(rs.getString("odsipwa"));
			om.setFecha_asignacion(rs.getString("odsfeas"));
			om.setFecha_carga(rs.getString("odsfeca"));
			om.setUsuario_asignacion(rs.getString("odsusas"));
			om.setUsuario_carga(rs.getString("odsusca"));
			om.setFecha_orden(rs.getString("odsfrec"));
			om.setLatitud(rs.getString("odslati"));
			om.setLongitud(rs.getString("odslong"));
			om.setAnulada(rs.getInt("odsanba"));
			om.setObservacionBandeja(rs.getString("odsobct"));
			om.setUsuarioBandeja(rs.getString("odsusct"));
			om.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			lista.add(om);
		}
		rs.close();
		
		return lista;
	}
	
	public boolean FindOrdenAsignada (String id, String cedula) throws SQLException {
		boolean result = false;
		String  sql = "select * from asignadas_st where odspeas=? and odscodi = ?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, cedula);
		pst.setString(2, id);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			ordenMantenimiento = new OrdenMantenimiento();
			ordenMantenimiento.setId(rs.getString("odscodi"));
			ordenMantenimiento.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			ordenMantenimiento.setProducto(rs.getString("odsacti"));
			ordenMantenimiento.setLocalidad(rs.getString("odsloca"));
			ordenMantenimiento.setDescLocalidad(rs.getString("locadesc"));
			ordenMantenimiento.setDepartamento(rs.getString("locadepa"));
			ordenMantenimiento.setDescDepartamento(rs.getString("depadesc"));
			ordenMantenimiento.setCliente(rs.getString("odsnocl"));
			ordenMantenimiento.setTelefonoCliente(rs.getString("odsteco"));
			ordenMantenimiento.setDireccion(rs.getString("odsdire"));
			ordenMantenimiento.setCentral(rs.getString("odsnuce"));
			ordenMantenimiento.setDistribuidor(rs.getString("odsdist"));
			ordenMantenimiento.setListon(rs.getString("odslist"));
			ordenMantenimiento.setParListon(rs.getString("odspali"));
			ordenMantenimiento.setCaja(rs.getString("odscaja"));
			ordenMantenimiento.setParCaja(rs.getString("odsparc"));
			ordenMantenimiento.setPost(rs.getString("odspost"));
			ordenMantenimiento.setAdsl(rs.getString("odsadsl"));
			ordenMantenimiento.setArmario(rs.getString("odsarma"));
			ordenMantenimiento.setAbonado(rs.getString("odsnuab"));
			ordenMantenimiento.setIpDSLAM(rs.getString("odsipds"));
			ordenMantenimiento.setIpLAN(rs.getString("odsipla"));
			ordenMantenimiento.setIpWAN(rs.getString("odsipwa"));
			ordenMantenimiento.setFecha_asignacion(rs.getString("odsfeas"));
			ordenMantenimiento.setFecha_carga(rs.getString("odsfeca"));
			ordenMantenimiento.setUsuario_asignacion(rs.getString("odsusas"));
			ordenMantenimiento.setUsuario_carga(rs.getString("odsusca"));
			ordenMantenimiento.setFecha_orden(rs.getString("odsfrec"));
			ordenMantenimiento.setLatitud(rs.getString("odslati"));
			ordenMantenimiento.setLongitud(rs.getString("odslong"));
			ordenMantenimiento.setAnulada(rs.getInt("odsanba"));
			ordenMantenimiento.setObservacionBandeja(rs.getString("odsobct"));
			ordenMantenimiento.setUsuarioBandeja(rs.getString("odsusct"));
			ordenMantenimiento.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			result = true;
		}
		rs.close();
		
		return result;
	}
	
	
	
	public boolean FindOrdenEnBandeja(String id) throws SQLException {
		boolean result = false;
		String  sql = "select * from en_bandeja_st where odscodi = ?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, id);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			ordenMantenimiento = new OrdenMantenimiento();
			ordenMantenimiento.setId(rs.getString("odscodi"));
			ordenMantenimiento.setOrden(rs.getString("odsnatis") + "-" + rs.getString("odsnatie") );
			ordenMantenimiento.setProducto(rs.getString("odsacti"));
			ordenMantenimiento.setLocalidad(rs.getString("odsloca"));
			ordenMantenimiento.setDescLocalidad(rs.getString("locadesc"));
			ordenMantenimiento.setDepartamento(rs.getString("locadepa"));
			ordenMantenimiento.setDescDepartamento(rs.getString("depadesc"));
			ordenMantenimiento.setCliente(rs.getString("odsnocl"));
			ordenMantenimiento.setTelefonoCliente(rs.getString("odsteco"));
			ordenMantenimiento.setDireccion(rs.getString("odsdire"));
			ordenMantenimiento.setCentral(rs.getString("odsnuce"));
			ordenMantenimiento.setDistribuidor(rs.getString("odsdist"));
			ordenMantenimiento.setListon(rs.getString("odslist"));
			ordenMantenimiento.setParListon(rs.getString("odspali"));
			ordenMantenimiento.setCaja(rs.getString("odscaja"));
			ordenMantenimiento.setParCaja(rs.getString("odsparc"));
			ordenMantenimiento.setPost(rs.getString("odspost"));
			ordenMantenimiento.setAdsl(rs.getString("odsadsl"));
			ordenMantenimiento.setArmario(rs.getString("odsarma"));
			ordenMantenimiento.setAbonado(rs.getString("odsnuab"));
			ordenMantenimiento.setIpDSLAM(rs.getString("odsipds"));
			ordenMantenimiento.setIpLAN(rs.getString("odsipla"));
			ordenMantenimiento.setIpWAN(rs.getString("odsipwa"));
			ordenMantenimiento.setFecha_asignacion(rs.getString("odsfeas"));
			ordenMantenimiento.setFecha_carga(rs.getString("odsfeca"));
			ordenMantenimiento.setUsuario_asignacion(rs.getString("odsusas"));
			ordenMantenimiento.setUsuario_carga(rs.getString("odsusca"));
			ordenMantenimiento.setObservacion(rs.getString("odsobse"));
			ordenMantenimiento.setCausal(rs.getString("odstire"));
			ordenMantenimiento.setDescCausal(rs.getString("tiredesc"));
			ordenMantenimiento.setTicket(rs.getString("odscole"));
			ordenMantenimiento.setOperador(rs.getString("odsoper"));
			ordenMantenimiento.setAnulada(rs.getInt("odsanba"));
			ordenMantenimiento.setObservacionBandeja(rs.getString("odsobct"));
			ordenMantenimiento.setUsuarioBandeja(rs.getString("odsusct"));
			// ordenMantenimiento.setNombreTecnico(rs.getString("persnomb") + " " + rs.getString("persapel"));
			ordenMantenimiento.setNombreTecnico("");
			result = true;
		}
		rs.close();
		
		return result;
		
	}
	
	public Long TotalAsignadas() throws SQLException {
		Long total = 0L;
		String sql = "select count(odscodi) total from asignadas_st";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
				total = rs.getLong("total");
				if (total.equals(null)) {
					total = 0L;
				}
		}
		return total;
	}
	
	public Long TotalAsignadas(String departamento) throws SQLException {
		Long total = 0L;
		String sql = "select count(odscodi) total from asignadas_st where locadepa=?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, departamento);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
				total = rs.getLong("total");
				if (total.equals(null)) {
					total = 0L;
				}
		}
		return total;
	}
	
	public Long TotalAsignadas(String departamento, String usuario) throws SQLException {
		Long total = 0L;
		String sql = "select count(odscodi) total from asignadas_st where locadepa=? and odspeas in (select cedula from usuario_personal where usuario = ?)";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, departamento);
		pst.setString(2, usuario);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
				total = rs.getLong("total");
				if (total.equals(null)) {
					total = 0L;
				}
		}
		return total;
	}
	
	public Long TotalAsignadasPersonal(String cedula) throws SQLException {
		Long total = 0L;
		String sql = "select count(odscodi) total from asignadas_st where odspeas = ?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, cedula);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
				total = rs.getLong("total");
				if (total.equals(null)) {
					total = 0L;
				}
		}
		return total;
	}
	

}
